/*
 * Copyright 2024 LinQingYing. and contributors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * The use of this source code is governed by the Apache License 2.0,
 * which allows users to freely use, modify, and distribute the code,
 * provided they adhere to the terms of the license.
 *
 * The software is provided "as-is", and the authors are not responsible for
 * any damages or issues arising from its use.
 *
 */

package com.linqingying.cangjie.ide.inspections

import com.linqingying.cangjie.psi.*

object OperatorToFunctionConverter {



    /**
     * Converts operator call to an explicit function call.
     *
     * N.B. Has to use some resolve inside, so resorts to [allowAnalysisOnEdt].
     */
//    fun convert(element: CjExpression): Pair<CjExpression, CjSimpleNameExpression> {
//        var elementToBeReplaced = element
//        if (element is CjArrayAccessExpression && isAssignmentLeftSide(element)) {
//            elementToBeReplaced = element.parent as CjExpression
//        }
//
//        val commentSaver = CommentSaver(elementToBeReplaced, saveLineBreaks = true)
//
//        val result = when (element) {
//            is CjUnaryExpression -> convertUnary(element)
//            is CjBinaryExpression -> convertBinary(element)
//            is CjArrayAccessExpression -> convertArrayAccess(element)
//            is CjCallExpression -> convertCall(element)
//            else -> throw IllegalArgumentException(element.toString())
//        }
//
//        commentSaver.restore(result)
//
//        val callName = findCallName(result) ?: error("No call name found in ${result.text}")
//        return result to callName
//    }

}
